/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Calculos;

import java.util.ArrayList;

/**
 *
 * @author Beto
 */
public class EngastadacargaMomento {

     private ArrayList<double []> cargaMomento=new ArrayList<double[]>();
     private double incremento=0.005;
     private double R=0.0;
     private static final double coeficienteE = 205*Math.pow(10, 9);
     private ArrayList<double []> deformada=new ArrayList<double[]>();

    public EngastadacargaMomento() {
    }


     public void calculaCargaMomento(double forca, double tamanhoViga) {

        CalculaFuncaoFletor(forca, tamanhoViga);
        CalculaFuncaoEsforcoCortante(forca, tamanhoViga);


    }

     private void CalculaFuncaoFletor(double forca,double comprimento){

    int tamanhoVetor = (int) (comprimento / incremento);
        double x[] = new double[tamanhoVetor];
        double y[] = new double[tamanhoVetor];
        for (int i = 1; i < tamanhoVetor; i++) {
            x[i] = x[i - 1] + incremento;
        }

        for(int i=0;i<tamanhoVetor;i++){

                y[i]=-1*forca;


        }
       // new Graficos("Gráfico Momento Fletor Força Centrada", x, y);
        cargaMomento.add(x);
        cargaMomento.add(y);
}

     public double CalculaFletorNoPonto(double x, double forca){

                double resultado;

                resultado=-1*forca;
                return resultado;

        }



      private void CalculaFuncaoEsforcoCortante(double forca, double comprimento) {
        int tamanhoVetor = (int) (comprimento / incremento);
        double x[] = new double[tamanhoVetor];
        double y[] = new double[tamanhoVetor];
        for (int i = 1; i < tamanhoVetor; i++) {
            x[i] = x[i - 1] + incremento;
        }
        for (int i = 0; i < tamanhoVetor; i++) {
           y[i]=0.0;
        }


       // new Graficos("Gráfico Esforço Cortante Força Centrada", x, y);
        cargaMomento.add(x);
        cargaMomento.add(y);
}

       public double CalculaEsforcoCortanteNoPonto() {
       return 0.0;

        }

    public void CalculaDeformadaVetor(double momento, double comprimento, double posicao, double iY){

        int tamanhoVetor = (int) (comprimento / incremento);
        double x[] = new double[tamanhoVetor];
        double y[] = new double[tamanhoVetor];

        for (int i = 1; i < tamanhoVetor; i++) {
            x[i] = x[i - 1] + incremento;
        }

        for(int i=0;i<tamanhoVetor;i++){
            y[i] = this.CalculaDeformadaPonto(x[i], momento, comprimento, posicao, iY);
        }

        deformada.add(x);
        deformada.add(y);
    }


    public double CalculaDeformadaPonto(double x, double momento, double comprimento, double posicao, double iY){

        //0 <= x <= posição do momento
        if(0<=x && x <= posicao){
            return (momento*Math.pow(x, 2)) / (2*coeficienteE*iY);
        }

        //x > posição do momento
        return 0;
    }

    public ArrayList<double[]> getCargaMomento() {
        return cargaMomento;
    }

    public double getR() {
        return R;
    }

    public ArrayList<double[]> getDeformada() {
        return deformada;
    }


    
}
